#include <iostream>
using namespace std;

//实验验证一下继承的构造函数和析构函数的顺序问题
//创建过程A,B,C,析构过程~C,~B,~A
//!!!!!!!其实是先调用的派生类的析构函数，牢记：一定是先调用所创建的类的
//构造函数，销毁是也一定是先调用该类的析构函数
//如果在基类构造函数中没有显示的写出构造函数，那么就会默认调用无参构造函数
//所以一定是先调用的派生类的构造函数，然后间接的调用基类构造函数
class A{
public:
    A(){
        cout<<"A"<<endl;
    }
    ~A(){
        cout<<"~A"<<endl;
    }
};

class B:public A{
public:
    B(){
       cout<<"B"<<endl; 
    }
    ~B(){
        cout<<"~B"<<endl;
    }


};

class C:B{
public:
    C(){
        cout<<"C"<<endl;
    }
    ~C(){
        cout<<"~C"<<endl;
    }
};
void test(){
    C c;

}
int main(int argc, char * argv[]){
    test();
    return 0;
}

